package com.hongji.lms5xxcommunicator.opc.sub;

/**
 * <p>OPC UA 订阅服务接口。</p>
 *
 * <p><b>职责：</b></p>
 * <ul>
 *   <li>启动和停止 OPC UA 订阅的完整生命周期；</li>
 *   <li>在启动时完成客户端初始化、订阅创建和监控项注册；</li>
 *   <li>在停止时清理监控项、删除订阅并断开连接；</li>
 *   <li>可结合 PLC 停止信号触发落库逻辑。</li>
 * </ul>
 *
 * <p><b>用法：</b></p>
 * <ol>
 *   <li>通过 Spring 注入实现类，例如 {@code @Autowired OpcSubscriptionService subService}；</li>
 *   <li>调用 {@link #start()} 启动订阅；</li>
 *   <li>调用 {@link #stop()} 停止并清理资源。</li>
 * </ol>
 *
 * @since 1.0
 */
public interface OpcSubscriptionService {

    /**
     * <p>启动 OPC UA 订阅。</p>
     *
     * <p>典型流程：</p>
     * <ol>
     *   <li>初始化 OPC UA 客户端；</li>
     *   <li>创建订阅对象；</li>
     *   <li>添加监控项，注册数据回调。</li>
     * </ol>
     */
    void start();

    /**
     * <p>停止 OPC UA 订阅。</p>
     *
     * <p>典型流程：</p>
     * <ol>
     *   <li>删除监控项；</li>
     *   <li>删除订阅对象；</li>
     *   <li>断开客户端连接，释放资源。</li>
     * </ol>
     */
    void stop();
}
